package com.cj.exceptionhandler.redisstart.controller;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class RedisTest {
    @Autowired
    RedisTemplate<String, String> redisTemplate;

    @RequestMapping("/")
    @ResponseBody
    public Object findOne() {
        // // 通过模板,获取到String类型的redis对象
        // ValueOperations<String, String> redisString = redisTemplate.opsForValue();
        // // 使用set方法,保存key和value的值
        // redisString.set("city", "南京");
        // // 使用get(key)的方法获取到city对应的值
        // String string = redisString.get("city");
        // System.out.println(string);

        // 通过模板获取list类型的redis
        // ListOperations<String, String> redisList = redisTemplate.opsForList();

        // // 通过key依次插入数据
        // redisList.leftPush("citys", "南京");
        // redisList.leftPush("citys", "上海");
        // redisList.leftPush("citys", "北京");
        // redisList.leftPush("citys", "上海");
        // redisList.leftPush("citys", "南京");
        //
        // // 查找索引范围内的所有数据
        // List<String> range = redisList.range("citys", 0, 10);
        // System.out.println(range);

        // 通过模板对象,获取到redis的hash类型的对象
        HashOperations<String, Object, Object> redisMap = redisTemplate.opsForHash();

        // // 建立map集合
        // Map<String, String> map = new HashMap<>();
        // map.put("name", "小明");
        // map.put("age", "18");
        // map.put("length", "175");
        // // 存储hash对象
        // redisMap.putAll("people", map);

        // 获取数据库中存储的集合的key
        Set<Object> keys = redisMap.keys("people");
        // 遍历key集合,获取到map中所有的value值
        for (Object key : keys) {
            Object value = redisMap.get("people", key);
            System.out.println(key + ":" + value);
        }

        boolean hasKey = redisTemplate.hasKey("city");
        if (hasKey) {
            String value = redisTemplate.opsForValue().get("city");
            System.out.println(value);
        }
        ;
        return hasKey;
    }
}
